Skip to content

fix(vector): warp groups using combined bounding box#3554

Open
LilSuperUser wants to merge 2 commits intoGraphiteEditor:masterfrom
LilSuperUser:fix/3551/box-warp-group-bbox
Open

fix(vector): warp groups using combined bounding box#3554
LilSuperUser wants to merge 2 commits intoGraphiteEditor:masterfrom
LilSuperUser:fix/3551/box-warp-group-bbox

Conversation

@LilSuperUser
Copy link

Groups of paths now warp together as a unit instead of independently.

  • union all subpath bounding boxes into one frame
  • normalize points and handles against shared bounds
  • apply bilinear interpolation into target quad
  • reset transforms after

Closes #3551

@@ -817,20 +832,22 @@ async fn box_warp(_: impl Ctx, content: Table<Vector>, #[expose] rectangle: Tabl
DVec2::new(source_bbox[0].x, source_bbox[1].y),
]
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NIT: add this line back in

@LilSuperUser LilSuperUser force-pushed the fix/3551/box-warp-group-bbox branch from c369737 to e2e2114 Compare February 12, 2026 00:13
Groups of paths now warp together as a unit instead of independently.

- union all subpath bounding boxes into one frame
- normalize points and handles against shared bounds
- apply bilinear interpolation into target quad
- reset transforms after warp

Fixes GraphiteEditor#3551
- move normalization epsilon to a file-level constant
- use Rect::combine_bounds for bbox merging (wrapping [DVec2; 2])
- restore blank line after dst_corners block
- restore and align inline comments across point and handle transforms
@LilSuperUser LilSuperUser force-pushed the fix/3551/box-warp-group-bbox branch from e2e2114 to 90b3f13 Compare February 12, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Box warp doesn't treat subpaths as unified object

2 participants